/**
 * 
 */
package de.htw_saarland.webservices.xml;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;

import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;
import org.jdom.output.XMLOutputter;

import de.htw_saarland.webservices.robotersteuerung.data.RobotData;

/**
 * @author Sascha Reichert
 * Diese Klasse dient zum Auslesen der Roboterliste! 
 *
 */
public class RobotListReader {
	
	// Variable nötig um den korrekten Pfad zur xml Datei zu konstruieren 
	private static String FILENAME = "/RoboSteuerung/WEB-INF/conf/robotlist.xml";

	// XML Kram 
	private SAXBuilder saxb = new SAXBuilder();
	private Document doc;
	
	/**
	 * Konstruktor ohne Sinn ;) 
	 */
	public RobotListReader()
	{

	}
	
	/**
	 * Methode dient zum Auslesen der RoboterDaten aus der XML Datei! 
	 * @return LinkedList von RobotData Objekten
	 */
	public LinkedList<RobotData> getRobotList()
	{
		Element root;
		List<Element> list;
		Iterator<Element> ite;
		String pathToXml = null; 	
		LinkedList<RobotData> robotList = new LinkedList<RobotData>(); 
		
		try 
		{
			// Versuch die Umgebungsvarialbe auszulesen!
			pathToXml = System.getenv("TOMCAT_APP_PATH"); 
			
		} catch (Exception ex)
		{
			System.out.println(ex.getMessage()); 
		}
		
		// ist die Umgebungsvariable != null fahre fort, 
		if (pathToXml != null)
		{
			try {
				doc = saxb.build(new File(pathToXml + RobotListReader.FILENAME));
				root = doc.getRootElement();
				// Abfragen ob Root überhaupt Knoten besitzt
				if (root.getContentSize() > 0) {
					list = root.getChildren();
					ite = list.iterator();
					while (ite.hasNext()) {
						// Aufbau der einzelnen Roboter Objekte 
						Element tmp;
						tmp = ite.next();
						RobotData roboData = new RobotData(); 
						roboData.robotID = tmp.getChildText("id"); 
						roboData.description = tmp.getChildText("description"); 
						robotList.add(roboData); 
					}
				}
			} catch (Exception ex)
			{
				System.out.println(ex.getMessage()); 
			}
		}	
		return robotList; 
	}

}
